# 计算器系统主程序
from pyecharts.charts import Page, Bar
from pyecharts import options as opts
import webbrowser
import os

# 全局变量存储计算结果
计算历史 = []

def 更新图表():
    """使用pyecharts生成柱状图显示计算历史"""
    # 创建页面
    page = Page(layout=Page.SimplePageLayout)

    # 创建柱状图
    bar = Bar()
    bar.add_xaxis([str(i+1) for i in range(len(计算历史))])
    bar.add_yaxis("计算结果", 计算历史)
    bar.set_global_opts(
        title_opts=opts.TitleOpts(title="计算器结果记录"),
        xaxis_opts=opts.AxisOpts(name="计算次数"),
        yaxis_opts=opts.AxisOpts(name="计算结果"),
    )
    # 将图表添加到页面
    page.add(bar)

    # 保存为HTML文件
    page.render("计算结果.html")

    # 自动打开浏览器显示结果
    webbrowser.open('file://' + os.path.realpath("计算结果.html"))

def 欢迎信息():
    print("\n欢迎使用计算器系统！")

菜单选项 = [
    "1.加法",
    "2.减法",
    "3.乘法",
    "4.除法",
    "5.退出"
]

# 系统成员列表
成员列表 = [
    '张天香',
    '孙优丹',
    '辛孟芮',
    '杨子琪'
]

def 加法():
    """两个数字相加"""
    print("\n=== 两个数字相加 ===")
    a = float(input("请输入第一个数字: "))
    b = float(input("请输入第二个数字: "))
    sum = a + b
    print(f"总和 = {sum}")
    return sum

def 多个数字相加():
    """多个数字相加"""
    print("\n=== 多个数字相加 ===")
    数量 = int(input("请输入要相加的数字个数: "))
    sum = 0
    for i in range(数量):
        a = float(input(f"请输入第{i+1}个数字: "))
        sum += a
    print(f"总和 = {sum}")
    return sum

def 减法():
    num1 = float(input("请输入第一个数字："))
    num2 = float(input("请输入第二个数字："))
    result = num1 - num2
    print("结果为：", result)
    return result

def 多个数字相减():
    print("------多个数字相减------")
    number = int(input("请输入需要减法的数字个数："))
    a = float(input("请输入第一个数字："))
    result = a
    for i in range(1, number):
        b = float(input(f"请输入第 {i+1} 个数字："))
        result -= b
    print("结果为：", result)
    return result

def 乘法():
    a = float(input("请输入第一个数字："))
    b = float(input("请输入第二个数字："))
    result = a * b
    print("两个数相乘的结果是：", result)
    return result

def 多个数相乘():
    print('---多个数相乘---')
    number = int(input("请输入需要相乘的数字个数："))
    result = 1
    for i in range(number):
        b = float(input(f'请输入第{i+1}个数字：'))
        result *= b
    print("结果为：", result)
    return result

def 除法():
    num1 = float(input("请输入第一个数字："))
    num2 = float(input("请输入第二个数字："))
    if num2 == 0:
        print("除数不能为0！")
        return None
    result = num1 / num2
    print("结果为：", result)
    return result

def 多个数字相除():
    print('------多个数字相除------')
    number = int(input("请输入需要相除的个数："))
    a = float(input('请输入第一个数字：'))
    result = a
    for i in range(1, number):
        b = float(input(f'请输入第{i+1}个数字：'))
        if b == 0:
            print("除数不能为0！")
            return None
        result /= b
    print("结果为：", result)
    return result

def 主函数():
    """主函数"""
    欢迎信息()

    while True:
        print("\n系统成员：")
        for 成员 in 成员列表:
            print(成员)

        print("\n请选择一个功能：")
        for 选项 in 菜单选项:
            print(选项)
        选择 = input("请输入(1-5): ")

        if 选择 == "1":
            print("\n1. 两个数字相加")
            print("2. 多个数字相加")
            子选择 = input("请选择(1-2): ")
            if 子选择 == "1":
                结果 = 加法()
            elif 子选择 == "2":
                结果 = 多个数字相加()
            else:
                print("无效的选择！")
                结果 = None

        elif 选择 == "2":
            print("\n1. 两个数字相减")
            print("2. 多个数字相减")
            子选择 = input("请选择(1-2): ")
            if 子选择 == "1":
                结果 = 减法()
            elif 子选择 == "2":
                结果 = 多个数字相减()
            else:
                print("无效的选择！")
                结果 = None

        elif 选择 == "3":
            print("\n1. 两个数字相乘")
            print("2. 多个数字相乘")
            子选择 = input("请选择(1-2): ")
            if 子选择 == "1":
                结果 = 乘法()
            elif 子选择 == "2":
                结果 = 多个数相乘()
            else:
                print("无效的选择！")
                结果 = None

        elif 选择 == "4":
            print("\n1. 两个数字相除")
            print("2. 多个数字相除")
            子选择 = input("请选择(1-2): ")
            if 子选择 == "1":
                结果 = 除法()
            elif 子选择 == "2":
                结果 = 多个数字相除()
            else:
                print("无效的选择！")
                结果 = None

        elif 选择 == "5":
            print("退出系统！")
            break
        else:
            print("无效的选择！")
            continue

        if 结果 is not None:
            计算历史.append(结果)
            更新图表()

if __name__ == "__main__":
    主函数()